package com.tsugun.mediaplayer.model.database;

import com.tsugun.mediaplayer.model.entity.DownloadMusicModel;
import com.tsugun.mediaplayer.model.entity.SheetModel;

import java.util.List;

/**
 * 数据操作接口
 * Created by shize on 2017/5/26.
 */

public interface DataOperator {

    /**
     * 获取喜欢的音乐
     *
     * @return list
     */
    List<String> getFavorite();

    /**
     * 添加喜欢的音乐
     *
     * @param musicId 音乐ID
     */
    void addFavorite(String musicId);

    /**
     * 删除喜欢的音乐
     *
     * @param musicId 音乐ID
     */
    void deleteFavorite(String musicId);

    /**
     * 获取最近播放的音乐
     *
     * @return list
     */
    List<String> getLately();

    /**
     * 添加到最近播放音乐表
     *
     * @param musicId 音乐ID
     */
    void addLately(String musicId);

    /**
     * 删除最近播放音乐表中的数据
     *
     * @param musicId 音乐ID
     */
    void deleteLately(String musicId);

    /**
     * 清除所有的最近播放列表中的数据
     */
    void clearLately();

    /**
     * 获取所有关注歌手
     *
     * @return list
     */
    List<String> getFollow();

    /**
     * 添加关注的歌手
     *
     * @param artistName 歌手名
     */
    void addFollow(String artistName);

    /**
     * 删除关注的歌手
     *
     * @param artistName 歌手名
     */
    void deleteFollow(String artistName);

    /**
     * 获取下载歌曲的信息
     *
     * @return list
     */
    List<DownloadMusicModel> getDownloadMusic();

    /**
     * 下载一首音乐
     *
     * @param downloadMusicModel 音乐信息
     */
    void addDownloadMusic(DownloadMusicModel downloadMusicModel);

    /**
     * 删除一首音乐
     *
     * @param url 音乐地址
     */
    void deleteDownloadMusic(String url);

    /**
     * 获取歌单列表
     *
     * @return list
     */
    List<SheetModel> getSheet();

    /**
     * 创建歌单
     *
     * @param sheetModel 歌单
     * @return id
     */
    String addSheet(SheetModel sheetModel);

    /**
     * 删除歌单
     *
     * @param sheetId 歌单ID
     */
    void deleteSheet(String sheetId);

    /**
     * 修改歌单
     *
     * @param sheetModel 修改后的歌单
     */
    void updateSheet(SheetModel sheetModel);

    /**
     * 获取播放列队
     *
     * @return list
     */
    List<String> getPlayList();

    /**
     * 清空列队
     */
    void clearPlayList();

    /**
     * 添加到播放列队
     *
     * @param musicId 音乐id
     */
    void addMusicToPlayList(String musicId);

    /**
     * 删除播放列队的一首歌曲
     *
     * @param musicId id
     */
    void deleteMusicFromPlayList(String musicId);

}
